The Transmission Control Protocol (TCP) is one of the most commonly used transport protocols in Internet Protocol (IP) based communication networks, such as the Internet. TCP provides reliability on top of the unreliable IP protocol, in-order delivery of data, and a network congestion control mechanism. TCP is the primary end-to-end transport layer protocol in the Internet for non-real time data including data arising from, for example, web browsing, file-downloading and e-mail applications.
TCP is a sliding window protocol; the sender's window, or what it is allowed to send, is based on the receiver's offered window (rwnd) and a congestion window (cwnd) calculated by the sender using a congestion control algorithm. The size of the TCP sender's window is defined as the minimum of the receiver's window (rwnd) and the congestion window (cwnd).
When the sender receives an acknowledgement (ACK) from the receiver, the sender can transmit as many new segments as were acknowledged. The newly transmitted segments will be acknowledged at a later time. The spacing of the ACKs will determine the rate at which new packets are sent. This property is known as self-clocking. The rate at which the packets flow through the downlink pipe is also the rate at which the ACKs are sent back to the sender.
The maximum amount of data that can be in transit across a connection between two endpoints of a network at any one time is referred to as the “pipe capacity” of that connection. The pipe capacity is equal to the maximum connection bandwidth or “bottleneck rate” (measured, for example, in bits per second) multiplied by the transmission delay of the connection (measured, for example, in seconds). For bidirectional communications, the transmission delay may represent the round trip time of the connection (i.e., the sum of the delays in each direction).
An end-point in the network cannot know the true maximum connection bandwidth or latency for the connection and therefore cannot know the pipe capacity. Instead the end-point has to determine the pipe capacity and therefore the bottleneck rate based upon the observed rate of successful packet transmission. When an ACK is received, it is a signal that a packet was successfully transmitted and that more bandwidth is available. When a packet is dropped, it is a signal of light congestion. When there are many packet drops or a time-out, it is a signal of serious congestion. TCP acts on these events by changing its send window or by starting over using the initial settings.
Congestion control in TCP is comprised of four intertwined algorithms, the slow-start algorithm, congestion avoidance algorithm, fast-retransmit algorithm, and fast-recovery algorithm. The slow-start algorithm and the congestion avoidance algorithm are independent algorithms with different objectives, although in practice they are implemented together.
The Active Queue Management (AQM) algorithm, which is typically implemented in a store and forward node (e.g., a router, gateway or other store and forward node) between two endpoints, makes use of the TCP congestion avoidance algorithm to limit the congestion window by occasionally dropping a TCP packet. A smaller congestion window leads to smaller amounts of buffered data, and thus also a smaller delay. AQM can also be used for other transmission protocols, including, but not limited to, User Datagram Protocol (UDP) and Real-time Transport Protocol (RTP).
The delay based AQM algorithm uses a Minimum Age Threshold parameter that defines the minimum queuing delay that a packet must have experienced at the store and forward node before it may be dropped. The Minimum Age Threshold parameter is an important parameter from a performance perspective. When setting this parameter, there is a tradeoff between low queuing delays (i.e., few packets in the queue) and link utilization or throughput performance (i.e., there should never be so little data in the queue that the queue runs empty, since that will result in a throughput degradation). For example, setting the Minimum Age Threshold parameter to a low value will result in lowering the average queue size, resulting in smaller queuing delays. However, this means that the risk of getting an empty buffer increases (resulting in lower throughput). Moreover, setting the Minimum Age Threshold parameter to a higher value will result in increasing the average queue size, resulting in greater queuing delays.
The Minimum Age Threshold parameter should ideally be set to reflect the pipe capacity. When expressed in time, an ideal setting for the Minimum Age Threshold is the round-trip time (RTT) seen by the TCP flow in a system without queuing delays. Since it is difficult for the AQM algorithm to know the RTT, it has to be estimated.
The delay-based AQM algorithm described above can result in a TCP timeout, which can degrade the TCP performance, when the sender transitions between slow-start algorithm and the congestion avoidance algorithm. Accordingly, what is desired is an improved queue management system and method to overcome this and/or other disadvantages of the prior art.